using Microsoft.Xna.Framework;
using XNAGameEngine;
using XNAGameEngine.Audio;
using XNAGameEngine.Collision;
using XNAGameEngine.GameObject;
using XNAGameEngine.GUI;
using XNAGameEngine.Input;
using XNAGameEngine.Logs;

namespace XNAGame
{
    internal static class Program
    {
        /// <summary>
        /// The main entry point for the Game.
        /// </summary>
        private static void Main(string[] args)
        {
            using (Game game = new GameEngine())
            {
                game.IsMouseVisible = true;
                //GameEngine.GraphicsDeviceManager.PreferredBackBufferWidth = 1920;
                //GameEngine.GraphicsDeviceManager.PreferredBackBufferHeight = 1080;
                //GameEngine.GraphicsDeviceManager.IsFullScreen = true;

                new ManagerMouseEvents(game, new ManagerInput(game));
                new ManagerGameObject2D(game);
                new ManagerAudio2D(game);
                new ManagerGUI(game);
                new ManagerCollision(game);

                RegisterGUILayouts();
                RegisterGameStates();
                RegisterGameStateTransitions();
                RegisterGameObjects();

                game.Run();
            }
        }

        private static void RegisterGameStates()
        { }

        private static void RegisterGameStateTransitions()
        { }

        private static void RegisterGameObjects()
        { }

        private static void RegisterGUILayouts()
        { }
    }
}